Jak pouzit StartTransaction, Commit, Rollback
Otázka od: Petr Svejda
10. 4. 2004 22:54
FB1.5, IBX, D7P, WXPP
na formular umistim IBDataSet, IBDatabase, IBTransaction, DataSource,
DBGrid. Vse nastavim a pouzivam. Pri uzavreni formulare se provede
automaticky Commit.
Ja bych ale potreboval, aby se provedla standardni konstrukce na tlacitko:
TBTransaction.StartTransaction;
try
TBDataSet.Edit;
TBDataSet.FieldsByName('Nazev').AsString;
TBDataSet.Post;
TBTransction.Commit;
except
TBTransction.Rollback;
end;
Nejak nedokazu soucasne nastavit 'zivy' Select s Insertem, Deletem a Modify
se standartni pouzitim transakci. Jde o to, aby se Commit provedl vzdy po
modifikaci dat, a ne az pri ukonceni programu. Pri vypadku proudu by
uzivatel ztratil vsechnu praci.
Nenasel by se nekdo, kdo by me poslal nebo popsal vzorovy priklad, jak na
to?
Diky Petr
Odpovedá: Lebeda David
13. 4. 2004 5:34
> Nejak nedokazu soucasne nastavit 'zivy' Select s Insertem, Deletem a
> Modify se standartni pouzitim transakci. Jde o to, aby se Commit
> provedl vzdy po modifikaci dat, a ne az pri ukonceni programu. Pri
> vypadku proudu by uzivatel ztratil vsechnu praci.
Ahoj,
jsem zastancem reseni, kdy DBGrid je jen pro prohlizeni a editace se provadi v
samostatnem formulari. Pak pro editaci pouzivas jiny dataset a jinou transakci
nez tu
pro cteni.
Pokud bys ale trval na prime editaci v gridu, lze commitu po kazde operaci
dosahnout
napr. tak, ze v AfterPost a v AfterDelete budes volat CommitRetaining. Je ovsem
otazka, zda z toho bude SQL server nadseny a zda to nepovede k postupnemu
zpomalovani prace s SQL serverem - to at posoudi odbornici nebo viz archiv.
David Lebeda
Odpovedá: Petr Svejda
13. 4. 2004 9:35
presne tak to pouzivam. mam dbGrid pouze pro cteni a zvlastni okno na
editaci. Na tlacitko OK chci krome zapisu do hodnot provest take Commit, ale
stale se mi nedari slozit dohromady komponenty a kod.
Muzete mi nekdo poslat ukazkovy kod (na petr@svejda.cz), nebo popis, jake
komponenty ze zalozky Interbase (IBX) pouzit. Hrozne to specha a ja jsem ve
sve literature nenasel nic, ceho bych se chytit. Ten commit po kazdem update
nebo insertu je nutny!!!
-----Original Message-----
> Nejak nedokazu soucasne nastavit 'zivy' Select s Insertem, Deletem a
> Modify se standartni pouzitim transakci. Jde o to, aby se Commit
> provedl vzdy po modifikaci dat, a ne az pri ukonceni programu. Pri
> vypadku proudu by uzivatel ztratil vsechnu praci.
jsem zastancem reseni, kdy DBGrid je jen pro prohlizeni a editace se provadi
v samostatnem formulari. Pak pro editaci pouzivas jiny dataset a jinou
transakci nez tu pro cteni.
Pokud bys ale trval na prime editaci v gridu, lze commitu po kazde operaci
dosahnout napr. tak, ze v AfterPost a v AfterDelete budes volat
CommitRetaining. Je ovsem otazka, zda z toho bude SQL server nadseny a zda
to nepovede k postupnemu zpomalovani prace s SQL serverem - to at posoudi
odbornici nebo viz archiv.